
/*		SPI  MASTER	 TO SPI SLAVE			*/

/*
 * main.c
 */
#include <msp430x552x.h>
#include <stdio.h>
#include <string.h>
#include "init.h"
#include "gyro_init.h"
#include "accel_init.h"
#include "compass_init.h"
#include "spi.h"

extern volatile unsigned int contatore;

/*
 * main.c
 */
void main(void) {
	volatile unsigned int i;
	volatile unsigned char valore;
	double temperatura;
	char conv[30], stato;



	// Stop watchdog timer
    WDTCTL = WDTPW | WDTHOLD;

    /// set Internal DCO. This value is 2^15*3^2*5^2*3, so it is a mutiple of 2^9*3^2*5^2 = 115200
    setDCO(FDCO);

    /// initialize UART1 per comunicazioni con PC
    initUART1(19200, FDCO);
    /// inizializza UART0 per comunicazioni con altra scheda
    initUART0(38400, FDCO);

    initMCU();
    /// init port 1
    initPort1();
    P1REN = 2;			/// 0 0 0 0 0 0 1 0  pull up
    P1OUT = 2;

    P4DIR = 0x80;
    P4OUT = 0x80;

    initADCmultiCH(6, 0, 5);
    initTIMER(FDCO);

    setUCB0_4Wire();
    printf("=========================\n\r");
    printf("CPU inizializzata! \n\r");
    // Enable interrupt
    __bis_SR_register(GIE);

	/// wait until P1.1 isn't pressed
	while(P1IN & BIT1);



	/*          INIT ACCELEROMETER REGISTERS                */
	//initI2C_B1(FDCO, 800000, ACCEL_ADDR);
	//valore = readI2CByteFromAddress(CTRL_REG1_A, &stato);
	//stato =  writeI2CByte(CTRL_REG1_A, ODR1 + ODR0 + ZaxEN + YaxEN + XaxEN);
	/*														*/

	/*       	   INIT COMPASS REGISTERS
	initI2C_B1(FDCO, 800000, COMPASS_ADDR);
	valore = readI2CByteFromAddress(CRA_REG_M, &stato);
	stato = readI2C_N_Byte(CRA_REG_M, 3, buff);
	stato =  writeI2CByte(MR_REG_M, 0);
	valore = readI2CByteFromAddress(MR_REG_M, &stato);*/

	i = 0;
    while(1){

    	/// Lettura comando arrivato ed invio al modulo motori
    	//receiveCmd();
    	/// misura della distanza percorsa e dal muro
    	//calcolaDistanze();
    	/// richiesta giroscopio
    	//richiediGiroscopio();
    	/// calcolo dell'allineamento rispetto ai dati giroscopio
    	//calcolaAllineamentoAssi();
    	/// mappatura cella
    	//mappaCella();
    	/// controllo dell'avanzamento.
    	if ((contatore & 15) == 0)
    			B0tx_Gyro(0xA5);

    }
}





